Плоскости - важное понятие 3D графики. Плоскость - бесконечная плоская пластинка, которая
делит пространство на два полупространства. Любая плоскость может быть задана тремя
вертексами.
Важнейшей характеристикой плоскости является нормаль. Нормаль - это единичный
вектор, перпендикулярный самой плоскости, обычно обозначается буквой n.
Определить нормаль можно с помощью векторного произведения векторов AB и AC.
Плоскости заются уравнением вида:
Ax+Bx+Cz+D = 0
Здесь A, B, C - соответственно координады x, y, z вектора нормали; D - минимальное расстояние до
начала координат. С плоскостями связана очень важная тема определения столкновений объектов.
Поэтому необходимо уметь определять расстояние от точки до плоскости, точку пересечения
прямой и плосккости и т.д. В этой главе будет рассказано как это делается.
Пункт первый: определение расстояния от точки до плоскости. Делается это невероятно просто. Как
уже говорилось в главе о векторах: если скалярно умножить вектор на единичный, то получим
длину проекции его на прямую, образуемую единичным вектором. В нашем случае единичным будет
вектор нормали, а другим будет являться вектор от начала координат до нашей точки. Находим
скалярное произведение этих векторов - получаем длину O'A, вычитаем из
этого показатель плоскости D - находим искомое расстояние. Непонятно?: смори на картинку.
Тут синяя прямая - это плоскость: вид сбоку, n - нормаль, A - точка расстояние от которой до плоскости нужнно определить, O - начало координат, NO' = D. Думаю все понятно.
Пункт второй: определение пересечения линий сплоскостью. Это тоже не шибко сложно. Опять
обращаемся к картинке.
Снова синенькая линия - это плоскость сбоку, AB - рассматриваемая прямая. Сначала найдем
скалярное произведение вектора нормали, и вектора AB. Затем, отношение получившейся длины
AB' к AN, где AN расстояние от точки A до плоскости. Умножаем вектор AB на полученный
коэфициент, получаем вектор AC, соединяющий точку A и ту самую искомую точку пересечения.
Теперь для конкретного случая линии нужно найти показатель P и поверить его на принадлежность
соответствующему промежутку.
Опять же для удобства работы с плоскостями можно создать класс. Если лень,
возьмите готовый.